制作meme的通用方式,来了解一下
微软以75亿美元收购全球最大的单身交友网站GitHub,应景分享一张图片,其实这图大家并不陌生,在《听说你还不会画热图》一文中,大家早已见过:
这图实在太好玩,被套在各种场景上,今天就要教大家怎么用R,纯代码生成这样的图,简直是吐槽神器。这类图可以归入meme,画meme,当然少不了我写的meme
包,这包收录在CRAN
中,点击下面链接了解一下:
然而meme
包主要针对的是最常见的meme形式,也就是上下加caption这种,对于现在我们要实现的这种对话形式的,可以说不是meme
包单独所支持的,当然要支持也很容易,但我觉得没必要,因为可以用下面我要介绍的方式,这种方式可以说本身也是通用的meme生成方式,反正你可以任意位置加文字嘛,而且是用你熟悉的ggplot2
语法,真的有这么神奇。有图有真相:
library(magick)
library(ggplot2)
library(shadowtext)
library(ggplotify)
x = image_read("meme-bg1.jpg")
p = as.ggplot(x)
p + geom_shadowtext(x=.25, y=.1, size=10, label="GITLAB", family="Impact") +
geom_shadowtext(x=.62, y=.5, size=6, label="EVERY GITHUB\nREPO RIGHT NOW", family="Impact") +
geom_shadowtext(x=.89, y=.25, size=7, label="MICROSOFT", family="Impact")
这段代码相当简单,你用magick
读图,然后用ggplotify
包把图转化成ggplot
对象,然后我们就可以用ggplot2
各种加图层了,就是这么简单!一般画meme用的是Impact
字体,这里我也是用这个字体,当然专业画meme的话,可不是随便加个字就算了,需要文字的背景有阴影效果,这个呢,有shadowtext
包可实现,详情可见《带你装逼带你飞,画图的文本打出阴影立体效果 》。
这里之所以能够这么爽,随随便便就画出专业级别的meme,就在于ggplotify
和shadowtext
这两个包,而这两个包的作者,就是Y叔本人啦(此处应该有掌声)。这两个包只是随手一组合,就可以当meme专业工具而已,当然它不是专门为meme制作而写的,所以一般画meme的话,还是我的meme
包好用,因为有各种针对画meme的细节上的考量,比如有meme_save
可以按照图片的长宽比输出文件,内置支持导入外部字体等,那么随意在各种位置上加字体的功能,我为什么不需要在meme
包中加入呢?因为meme
包生成的meme
对象,你也可以用ggplotify
转成ggplot
对象,然后参照上面示例的代码,用shadowtext
包,自己随意加图层,可以说这个功能本身也是有的,只不过不单独存在于meme
中而已,所以我不用去实现它,衔接meme
、ggplotify
、shadowtext
三个包,就完全可以胜任。
这两周又日更了一波,效果如同我在街上抓拍的这个车牌一样,根本不涨粉,下周又改回一周更两三篇的节奏吧。涨粉是原创者的避难所!
这里还有一个bonus哦,假设你有实验的图片,发表文章要拼图,你也能够用
cowplot
拼哦,上面的例子就是了,你用magick
读图,用ggplotify
转成ggplot
对象,这不就可以拼了么!你还能做注释呢(meme
台词就是注释)。所以这篇文章,也可以从这个方向解读,好玩的东西和搞科研发论文并不冲突!(然而我不明说,大家还是看不出来,我很多好文章就这样被无视了!多点点文后的传送门,温故而知新,可能会有意外收获呢)